#ifndef GX_META_COMPILER_H
#define GX_META_COMPILER_H

#include "MetaParser/MetaParserAux.h"
#include "MetaParser/MetaParser.h"
#include "Regex/MetaLexer.h"

namespace GxMetaParser
{
	class Lexer : public ILexer
	{
	private:
		int EndSymbolID;
		RefPtr<MetaLexer> lexer;
		LexStream stream;
		LexStream::LinkNode * curToken;
		Array<int> TokenID;
	public:
		Lexer(Grammar * g, const String & profile);
		Token GetNextToken();
		Token GetLastToken();
		Token ReadNextToken();
		bool CanParse();
		int GetErrorCount();
		LexerError & GetError(int id);
		bool Parse(const String & str);
	};

	class MetaCompiler : public Object
	{
	public:
		
	};
}

#endif